package pattern.builder;

import java.util.ArrayList;
import java.util.ListIterator;

abstract class Soup {
    ArrayList<String> soupIngredients = new ArrayList<String>();
    String soupName;

    public String getSoupName() {
        return soupName;
    }

    public String toString() {
        StringBuffer stringOfIngredients = new StringBuffer(soupName);
        stringOfIngredients.append(" Ingredients: ");
        ListIterator<String> soupIterator = soupIngredients.listIterator();
        while (soupIterator.hasNext()) {
            stringOfIngredients.append(soupIterator.next());
        }
        return stringOfIngredients.toString();
    }
}

class ChickenSoup extends Soup {
    public ChickenSoup() {
        soupName = "ChickenSoup";
        soupIngredients.add("1 Pound diced chicken");
        soupIngredients.add("1/2 cup rice");
        soupIngredients.add("1 cup bullion");
        soupIngredients.add("1/16 cup butter");
        soupIngredients.add("1/4 cup diced carrots");
    }
}

class ClamChowder extends Soup {
    public ClamChowder() {
        soupName = "ClamChowder";
        soupIngredients.add("1 Pound Fresh Clams");
        soupIngredients.add("1 cup fruit or vegetables");
        soupIngredients.add("1/2 cup milk");
        soupIngredients.add("1/4 cup butter");
        soupIngredients.add("1/4 cup chips");
    }
}

class FishChowder extends Soup {
    public FishChowder() {
        soupName = "FishChowder";
        soupIngredients.add("1 Pound Fresh fish");
        soupIngredients.add("1 cup fruit or vegetables");
        soupIngredients.add("1/2 cup milk");
        soupIngredients.add("1/4 cup butter");
        soupIngredients.add("1/4 cup chips");
    }
}

class Minnestrone extends Soup {
    public Minnestrone() {
        soupName = "Minestrone";
        soupIngredients.add("1 Pound tomatos");
        soupIngredients.add("1/2 cup pasta");
        soupIngredients.add("1 cup tomato juice");
    }
}

class PastaFazul extends Soup {
    public PastaFazul() {
        soupName = "Pasta Fazul";
        soupIngredients.add("1 Pound tomatos");
        soupIngredients.add("1/2 cup pasta");
        soupIngredients.add("1/2 cup diced carrots");
        soupIngredients.add("1 cup tomato juice");
    }
}

class TofuSoup extends Soup {
    public TofuSoup() {
        soupName = "Tofu Soup";
        soupIngredients.add("1 Pound tofu");
        soupIngredients.add("1 cup carrot juice");
        soupIngredients.add("1/4 cup spirolena");
    }
}

class VegetableSoup extends Soup {
    public VegetableSoup() {
        soupName = "Vegetable Soup";
        soupIngredients.add("1 cup bullion");
        soupIngredients.add("1/4 cup carrots");
        soupIngredients.add("1/4 cup potatoes");
    }
}
